//
// Created by jsjxsy on 2022/7/6.
//
#include <stdio.h>
//如果调用者传参时，两者类型不一致，在编译时就会发出警告。
#define max(x, y) ({                \
    typeof(x) _max1 = (x);          \
    typeof(y) _max2 = (y);          \
    (void) (&_max1 == &_max2);      \
_max1 > _max2 ? _max1 : _max2; })

int main(int argc, char *argv[]) {
  int a = 3;
  float b = 4.0;
   (void)(&a == & b);
  printf("bool: %d\n", 1);
  int r = max(a, b);

  printf("r:%d\n", r);

  //其它用法1
  char *p1;
  typeof (*p1) ch = 'a'; //ch为char类型，不是char *类型。
  printf("%d, %c\n", sizeof(ch), ch);//1, a

  //其它用法2
  char *p2;
  typeof (p2) p = "hello world";//此时的p才是char *类型，由于在64位机器上，所以指针大小为8字节
  printf("%d, %s\n", sizeof(p), p);//8, hello world
  return 0;
}


